home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / pc / PNC-ATL1.ZIP / RUMOUR / RUMOUR.PPS < prev    next >
Encoding:
Text File  |  1996-09-10  |  6.6 KB  |  168 lines

  1. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  2. ; Rumour PPE for Atlantis v1.0 [Add-On]
  3. ; Written by Jolly Roger
  4. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  5. ; Please modify it so it suits your needs.
  6. ; If you decide to use one of my functions/code in your own program
  7. ; you MUST mention the original writer in the doc/nfo - That's me :)
  8. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  9. ; This is INDEED a very simple PPE, in the near? future there will be
  10. ; another release of this Add-On. Probably v1.1 or something..
  11. ; ( Time is not on my side these days )
  12. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  13. DECLARE FUNCTION RequestKey() STRING
  14. DECLARE PROCEDURE SetupItems(INTEGER TotalItems)
  15. DECLARE PROCEDURE SetNewHighlighted(INTEGER Highlighted, INTEGER Before)
  16. ;────────────────────────────────────────────────────────────────────────────
  17. INTEGER TotalItemsInMenu, Temp, Total
  18. INTEGER CurrentHighlighted, LastHighlighted
  19. ;────────────────────────────────────────────────────────────────────────────
  20. STRING  ReturnKey, TempString, BadWords(50) 'that should be enough..
  21. STRING  ItemNormal(3), ItemHighlighted(3), Answer
  22. INTEGER FirstX, FirstY, EditX, EditY
  23.  
  24.  *$USEFUNCS
  25.  
  26. BEGIN
  27.  
  28.     IF (ANSION() = FALSE) THEN
  29.       PRINTLN "Error: You can't use this program without ANSI-Emulation"
  30.       NEWLINE
  31.       WAIT
  32.       END
  33.     END IF
  34.     FOPEN 1, PPEPATH() + "RUMOUR.DAT", O_RW, S_DN
  35.       FGET 1, Total
  36.     FCLOSE 1
  37.     EditX = 6
  38.     EditY = 14
  39.     FirstX = 20
  40.     FirstY = 15
  41.     GETUSER
  42.     ItemHighlighted(1) = "@X4F         ADD A NEW JUICY RUMOUR        "
  43.     ItemHighlighted(2) = "@X4F              LIST RUMOURS             "
  44.     ItemHighlighted(3) = "@X4F              QUIT RUMOURS             "
  45.     ItemNormal(1) = "@X07         Add A New Juicy Rumour        "
  46.     ItemNormal(2) = "@X07              List Rumours             "
  47.     ItemNormal(3) = "@X07              Quit Rumours             "
  48.     STARTDISP FNS
  49.     DISPFILE PPEPATH() + "RUMOUR1.PCB", 0
  50.     TotalItemsInMenu = 3
  51.     CurrentHighlighted = 1
  52.     LastHighlighted = CurrentHighlighted
  53.     SetupItems(TotalItemsInMenu)
  54.     SetNewHighlighted(CurrentHighlighted, LastHighlighted)
  55.  
  56. :MainLoop
  57.         
  58.     ReturnKey = RequestKey()
  59.     SELECT CASE (UPPER(ReturnKey))
  60.       CASE "UP", "LEFT", "A"
  61.               LastHighlighted = CurrentHighlighted
  62.               IF (CurrentHighlighted = 1) THEN
  63.                 CurrentHighlighted = TotalItemsInMenu
  64.               ELSE
  65.                 CurrentHighlighted = CurrentHighlighted - 1
  66.               END IF
  67.               SetNewHighlighted(CurrentHighlighted, LastHighlighted)
  68.       CASE "DOWN", "RIGHT", "Z"
  69.               LastHighlighted = CurrentHighlighted
  70.               IF (CurrentHighlighted = TotalItemsInMenu) THEN
  71.                 CurrentHighlighted = 1
  72.               ELSE
  73.                 CurrentHighlighted = CurrentHighlighted + 1
  74.               END IF
  75.               SetNewHighlighted(CurrentHighlighted, LastHighlighted)
  76.       CASE CHR(27)
  77.               PRINT "@X07@CLS@"
  78.               PRINTLN "@X09Rumour PPE @X01-@X09 Add-ON for Atlantis v1.0@X01 - @X09Written by@X01:@X09 Jolly Roger@X07"
  79.               NEWLINE
  80.               END
  81.       CASE CHR(13)
  82.               '// PPLC v3.1 does not support a nested
  83.               '// SELECT CASE. PPLC v3.2 does, however I don't have it :(
  84.               IF (CurrentHighlighted = 1) THEN
  85.                 IF (Total < 200) THEN 'Maximum Atlantis supports..
  86.                   DISPFILE PPEPATH() + "RUMOUR2.PCB", 0
  87.                   ANSIPOS EditX, EditY
  88.                   INPUTSTR "_", Answer, "@X0F", 68, MASK_ASCII(), DEFS
  89.                   Answer = SCRTEXT(EditX, EditY, 68, TRUE)
  90.                   Answer = STRIPATX(Answer)
  91.                   IF (TRIM(Answer, " ") <> "") THEN
  92.                       FOPEN 1, PPEPATH() + "RUMOUR.DAT", O_RW, S_DN
  93.                        FPUT 1, STRING(Total + 1)
  94.                       FCLOSE 1
  95.                       FAPPEND 1, PPEPATH() + "RUMOUR.DAT", O_RW, S_DN
  96.                         FPUTLN 1, Answer
  97.                         FPUTLN 1, "Entered by: " + U_NAME()
  98.                       FCLOSE 1
  99.                   END IF
  100.                   PRINT "@X07@CLS@"
  101.                   STARTDISP FNS
  102.                   DISPFILE PPEPATH() + "RUMOUR1.PCB", 0
  103.                   SetupItems(TotalItemsInMenu)
  104.                   SetNewHighlighted(CurrentHighlighted, LastHighlighted)
  105.                 END IF
  106.               END IF
  107.               IF (CurrentHighlighted = 2) THEN
  108.                 PRINT "@X07@CLS@"
  109.                 RESETDISP
  110.                 PRINT "@PON@"
  111.                 FOPEN 1, PPEPATH() + "RUMOUR.DAT", O_RW, S_DN
  112.                 FGET 1, Total
  113.                 FOR Temp = 1 TO Total
  114.                   FGET 1, TempString
  115.                   PRINTLN "@X08[@X0F" + STRING(Temp) + "@X08] - @X07" + TempString
  116.                   FGET 1, TempString
  117.                 NEXT
  118.                 FCLOSE 1
  119.                 NEWLINES 2
  120.                 WAIT
  121.                 PRINT "@POFF@"
  122.                 STARTDISP FNS
  123.                 DISPFILE PPEPATH() + "RUMOUR1.PCB", 0
  124.                 SetupItems(TotalItemsInMenu)
  125.                 SetNewHighlighted(CurrentHighlighted, LastHighlighted)
  126.               END IF
  127.               IF (CurrentHighlighted = 3) THEN
  128.                 PRINT "@X07@CLS@"
  129.                 PRINTLN "@X09Rumour PPE @X01-@X09 Add-ON for Atlantis v1.0@X01 - @X09Written by@X01:@X09 Jolly Roger@X07"
  130.                 NEWLINE
  131.                 END
  132.               END IF
  133.       CASE "HOME"
  134.               LastHighlighted = CurrentHighlighted
  135.               CurrentHighlighted = 1
  136.               SetNewHighlighted(CurrentHighlighted, LastHighlighted)
  137.       CASE "END"
  138.               LastHighlighted = CurrentHighlighted
  139.               CurrentHighlighted = TotalItemsInMenu
  140.               SetNewHighlighted(CurrentHighlighted, LastHighlighted)
  141.     END SELECT
  142.     GOTO MainLoop
  143.  
  144. FUNCTION RequestKey() STRING
  145.   LET ReturnKey = ""
  146.   WHILE (ReturnKey = "") DO 
  147.     LET ReturnKey = INKEY()
  148.     IF (ReturnKey = "BADKEY") ReturnKey = ""
  149.   ENDWHILE
  150.   RequestKey = ReturnKey
  151. ENDFUNC
  152.  
  153.  
  154. PROCEDURE SetupItems(INTEGER TotalItems)
  155.   FOR Temp = 1 TO TotalItems
  156.    ANSIPOS FirstX, FirstY + Temp - 1
  157.    PRINT ItemNormal(Temp)
  158.   NEXT
  159. END PROC
  160.  
  161. PROCEDURE SetNewHighlighted(INTEGER Highlighted, INTEGER Before)
  162.  ANSIPOS FirstX, FirstY + Before - 1
  163.    PRINT ItemNormal(Before)
  164.  ANSIPOS FirstX, FirstY + Highlighted - 1
  165.    PRINT ItemHighlighted(Highlighted)
  166.  ANSIPOS FirstX, FirstY + Highlighted - 1
  167. END PROC
  168.